home *** CD-ROM | disk | FTP | other *** search
/ CU Amiga Super CD-ROM 22 / CU Amiga Magazine's Super CD-ROM 22 (1998)(EMAP Images)(GB)[!][issue 1998-05].iso / PowerPC / Programming / PPCSmallEiffel / bin_c / compile_to_jvm41.c < prev    next >
Encoding:
C/C++ Source or Header  |  1998-01-16  |  48.6 KB  |  1,675 lines

  1. /*
  2. -- ANSI C code generated by :
  3. -- SmallEiffel The GNU Eiffel Compiler -- Release (- 0.82)      --
  4. -- Copyright (C), 1994-98 - LORIA - UHP - CRIN - INRIA - FRANCE --
  5. -- Dominique COLNET and Suzanne COLLIN -    colnet@loria.fr     --
  6. --                 http://www.loria.fr/SmallEiffel              --
  7. */
  8. #include "compile_to_jvm.h"
  9. /*No:NATIVE_JVM_INVOKEVIRTUAL.jvm_add_method_for_procedure*/
  10. /*No:NATIVE_JVM_INVOKEVIRTUAL.jvm_add_method_for_function*/
  11. /*No:NATIVE_JVM_INVOKEVIRTUAL.jvm_mapping_procedure*/
  12. /*No:NATIVE_JVM_INVOKEVIRTUAL.jvm_define_procedure*/
  13. int r970idx_methodref(T0* a1){
  14. int R=0;
  15. T0* _cp=NULL;
  16. T0* _alias_string=NULL;
  17. int _i=0;
  18. _cp=oBC364constant_pool;
  19. _alias_string=/*X279*/((T0*)(((T679*)((T679*)a1)))->_alias_string/*52*/);
  20. /*IF*/if ((_alias_string)==((void*)(NULL))) {
  21. r683add_position(X279start_position(a1));
  22. /*[IRF3.6fatal_error*/{T0* b1=((T0*)ms1_769);
  23. r683fatal_error(((T683*)(oBC364eh)),b1);
  24. }/*]*/
  25. }
  26. /*FI*/_i=1;
  27. /*[IRF3.3clear*/((((T7*)(((T7*)(oBC769tmp_class)))))->_count)=(0);
  28. /*]*/
  29. while (!((/*(IRF4.6item*/((((T7*)((T7*)_alias_string)))->_storage/*0*/)[(_i)-(1)]/*)*/)==('\56'))) {
  30. r7extend(((T7*)(oBC769tmp_class)),/*(IRF4.6item*/((((T7*)((T7*)_alias_string)))->_storage/*0*/)[(_i)-(1)]/*)*/);
  31. _i=(_i)+(1);
  32. }
  33. _i=(_i)+(1);
  34. /*[IRF3.3clear*/((((T7*)(((T7*)(oBC769tmp_name)))))->_count)=(0);
  35. /*]*/
  36. while (!((/*(IRF4.6item*/((((T7*)((T7*)_alias_string)))->_storage/*0*/)[(_i)-(1)]/*)*/)==('\40'))) {
  37. r7extend(((T7*)(oBC769tmp_name)),/*(IRF4.6item*/((((T7*)((T7*)_alias_string)))->_storage/*0*/)[(_i)-(1)]/*)*/);
  38. _i=(_i)+(1);
  39. }
  40. _i=(_i)+(1);
  41. /*[IRF3.3clear*/((((T7*)(((T7*)(oBC769tmp_descriptor)))))->_count)=(0);
  42. /*]*/
  43. while (!((_i)>((((T7*)((T7*)_alias_string)))->_count/*4*/))) {
  44. r7extend(((T7*)(oBC769tmp_descriptor)),/*(IRF4.6item*/((((T7*)((T7*)_alias_string)))->_storage/*0*/)[(_i)-(1)]/*)*/);
  45. _i=(_i)+(1);
  46. }
  47. R=r95idx_methodref3(((T95*)_cp),oBC769tmp_class,oBC769tmp_name,oBC769tmp_descriptor);
  48. return R;
  49. }
  50. /*No:NATIVE_JVM_INVOKEVIRTUAL.use_current*/
  51. /*No:NATIVE_JVM_INVOKEVIRTUAL.jvm_define_function*/
  52. /*No:NATIVE_JVM_INVOKEVIRTUAL.fatal_error*/
  53. void r970jvm_mapping_function(T0* a1,T0* a2,T0* a3){
  54. T0* _ca=NULL;
  55. int _idx=0;
  56. int _space=0;
  57. _ca=oBC364code_attribute;
  58. r228drop_target(((T228*)(oBC364jvm)));
  59. _space=r228push_arguments(((T228*)(oBC364jvm)));
  60. _idx=r970idx_methodref((((T892*)((T892*)a1)))->_base_feature/*48*/);
  61. _space=(X291jvm_stack_space((((T892*)((T892*)a1)))->_result_type/*24*/))-(_space);
  62. r256opcode_invokevirtual(((T256*)_ca),_idx,_space);
  63. }
  64. void r620make(T620* C,T0* a1,T0* a2){
  65. int _actual_count=0;
  66. int _il=0;
  67. C->_start_position=a1;
  68. C->_list=a2;
  69. _il=1;
  70. while (!((_il)>((((T382*)((T382*)((((T620*)C))->_list/*8*/))))->_upper/*8*/))) {
  71. _actual_count=(_actual_count)+(X411count(r382item(((T382*)((((T620*)C))->_list/*8*/)),_il)));
  72. _il=(_il)+(1);
  73. }
  74. {T733*n=malloc(sizeof(*n));
  75. *n=M733;
  76. r733make(n,1,_actual_count);
  77. C->_flat_list=(T0*)n;
  78. }
  79. _il=1;
  80. while (!((_il)>((((T382*)((T382*)((((T620*)C))->_list/*8*/))))->_upper/*8*/))) {
  81. X411append_in(r382item(((T382*)((((T620*)C))->_list/*8*/)),_il),(T0*)C);
  82. _il=(_il)+(1);
  83. }
  84. }
  85. /*No:LOCAL_VAR_LIST.name*/
  86. /*No:LOCAL_VAR_LIST.nb_errors*/
  87. T0* r620type(T620* C,int a1){
  88. T0* R=NULL;
  89. R=(((T39*)((T39*)(/*(IRF4.6name*/r733item(((T733*)((((T620*)C))->_flat_list/*12*/)),a1)/*)*/))))->_result_type/*24*/;
  90. return R;
  91. }
  92. int r620jvm_offset_of(T620* C,T0* a1){
  93. int R=0;
  94. int _rank=0;
  95. int _i=0;
  96. _rank=/*X361*/((int)(((T886*)((T886*)a1)))->_rank/*20*/);
  97. _i=1;
  98. while (!((_i)==(_rank))) {
  99. R=(R)+(X291jvm_stack_space(X291run_type(r620type(C,_i))));
  100. _i=(_i)+(1);
  101. }
  102. return R;
  103. }
  104. /*No:LOCAL_VAR_LIST.start_position*/
  105. T0* r620to_runnable(T620* C,T0* a1){
  106. T0* R=NULL;
  107. T0* _n2=NULL;
  108. T0* _n1=NULL;
  109. int _i=0;
  110. /*IF*/if (((((T620*)C))->_current_type/*16*/)==((void*)(NULL))) {
  111. C->_current_type=a1;
  112. R=(T0*)C;
  113. _i=(((T733*)((T733*)((((T620*)C))->_flat_list/*12*/))))->_upper/*12*/;
  114. while (!(((_i)==(0))||((/*(IRF4.9nb_errors*/(((T683*)((T683*)(oBC364eh))))->_nb_errors/*0*//*)*/)>(0)))) {
  115. _n1=r733item(((T733*)((((T620*)C))->_flat_list/*12*/)),_i);
  116. _n2=r39to_runnable(((T39*)_n1),a1);
  117. /*IF*/if ((_n2)==((void*)(NULL))) {
  118. r620error((((T39*)((T39*)_n1)))->_start_position/*16*/,((T0*)ms3_535));
  119. }
  120.  else if ((_n1)!=((void*)(_n2))) {
  121. /*[IRF3.6put*/{T733* C1=((T733*)((((T620*)C))->_flat_list/*12*/));
  122. T0* b1=_n2;
  123. int b2=_i;
  124. ((((T733*)C1))->_storage/*4*/)[(b2)-((((T733*)C1))->_lower/*16*/)]=(b1);
  125. }/*]*/
  126. }
  127. /*FI*/r39name_clash(((T39*)_n2));
  128. _i=(_i)-(1);
  129. }
  130. }
  131. else {
  132. {T620*n=malloc(sizeof(*n));
  133. *n=M620;
  134. r620runnable_from_current(n,(T0*)C,a1);
  135. R=(T0*)n;
  136. }
  137. }
  138. /*FI*/return R;
  139. }
  140. /*No:LOCAL_VAR_LIST.em1*/
  141. void r620jvm_initialize(T620* C){
  142. int _i=0;
  143. int _jvm_offset=0;
  144. _i=/*(IRF4.6count*/(((T733*)((T733*)((((T620*)C))->_flat_list/*12*/))))->_upper/*12*//*)*/;
  145. while (!((_i)==(0))) {
  146. _jvm_offset=r228local_offset_of(((T228*)(oBC364jvm)),/*(IRF4.6name*/r733item(((T733*)((((T620*)C))->_flat_list/*12*/)),_i)/*)*/);
  147. X291jvm_initialize_local(r620type(C,_i),_jvm_offset);
  148. _i=(_i)-(1);
  149. }
  150. }
  151. /*No:LOCAL_VAR_LIST.list*/
  152. int r620rank_of(T620* C,T0* a1){
  153. int R=0;
  154. R=/*(IRF4.6count*/(((T733*)((T733*)((((T620*)C))->_flat_list/*12*/))))->_upper/*12*//*)*/;
  155. while (!(((R)==(0))||((a1)==((void*)((((T39*)((T39*)(/*(IRF4.6name*/r733item(((T733*)((((T620*)C))->_flat_list/*12*/)),R)/*)*/))))->_to_string/*12*/))))) {
  156. R=(R)-(1);
  157. }
  158. return R;
  159. }
  160. int r620jvm_stack_space(T620* C){
  161. int R=0;
  162. int _i=0;
  163. _i=/*(IRF4.6count*/(((T733*)((T733*)((((T620*)C))->_flat_list/*12*/))))->_upper/*12*//*)*/;
  164. while (!((_i)==(0))) {
  165. R=(R)+(X291jvm_stack_space(X291run_type(r620type(C,_i))));
  166. _i=(_i)-(1);
  167. }
  168. return R;
  169. }
  170. /*No:LOCAL_VAR_LIST.current_type*/
  171. void r620runnable_from_current(T620* C,T0* a1,T0* a2){
  172. T0* _n2=NULL;
  173. T0* _n1=NULL;
  174. int _i=0;
  175. C->_start_position=(((T620*)((T620*)a1)))->_start_position/*4*/;
  176. C->_list=(((T620*)((T620*)a1)))->_list/*8*/;
  177. C->_current_type=a2;
  178. C->_flat_list=r733twin(((T733*)((((T620*)((T620*)a1)))->_flat_list/*12*/)));
  179. _i=(((T733*)((T733*)((((T620*)C))->_flat_list/*12*/))))->_upper/*12*/;
  180. while (!((_i)==(0))) {
  181. _n1=r733item(((T733*)((((T620*)C))->_flat_list/*12*/)),_i);
  182. _n2=r39to_runnable(((T39*)_n1),a2);
  183. /*IF*/if ((_n2)==((void*)(NULL))) {
  184. r620error((((T39*)((T39*)_n1)))->_start_position/*16*/,((T0*)ms3_535));
  185. }
  186. /*FI*//*[IRF3.6put*/{T733* C1=((T733*)((((T620*)C))->_flat_list/*12*/));
  187. T0* b1=_n2;
  188. int b2=_i;
  189. ((((T733*)C1))->_storage/*4*/)[(b2)-((((T733*)C1))->_lower/*16*/)]=(b1);
  190. }/*]*/
  191. _i=(_i)-(1);
  192. }
  193. }
  194. void r620add_last(T620* C,T0* a1){
  195. T0* _n2=NULL;
  196. int _i=0;
  197. _i=1;
  198. while (!((r733item(((T733*)((((T620*)C))->_flat_list/*12*/)),_i))==((void*)(NULL)))) {
  199. _n2=r733item(((T733*)((((T620*)C))->_flat_list/*12*/)),_i);
  200. /*IF*/if (((((T39*)((T39*)_n2)))->_to_string/*12*/)==((void*)((((T39*)((T39*)a1)))->_to_string/*12*/))) {
  201. r683add_position((((T39*)((T39*)a1)))->_start_position/*16*/);
  202. r683add_position((((T39*)((T39*)_n2)))->_start_position/*16*/);
  203. /*[IRF3.6fatal_error*/{T0* b1=((T0*)ms2_535);
  204. r683fatal_error(((T683*)(oBC364eh)),b1);
  205. }/*]*/
  206. }
  207. /*FI*/_i=(_i)+(1);
  208. }
  209. /*[IRF3.6put*/{T733* C1=((T733*)((((T620*)C))->_flat_list/*12*/));
  210. T0* b1=a1;
  211. int b2=_i;
  212. ((((T733*)C1))->_storage/*4*/)[(b2)-((((T733*)C1))->_lower/*16*/)]=(b1);
  213. }/*]*/
  214. /*[IRF3.3set_rank*/((((T39*)(((T39*)a1))))->_rank)=(_i);
  215. /*]*/
  216. }
  217. void r620error(T0* a1,T0* a2){
  218. r683add_position(a1);
  219. r683error(((T683*)(oBC364eh)),a2);
  220. }
  221. /*No:LOCAL_VAR_LIST.count*/
  222. /*No:LOCAL_VAR_LIST.fatal_error*/
  223. /*No:LOCAL_VAR_LIST.flat_list*/
  224. int r549id(T549* C){
  225. int R=0;
  226. R=(((T355*)((T355*)(r549run_class(C)))))->_id/*4*/;
  227. return R;
  228. }
  229. /*No:TYPE_BIT_1.n*/
  230. /*No:TYPE_BIT_1.nb*/
  231. /*No:TYPE_BIT_1.jvm_target_descriptor_in*/
  232. /*No:TYPE_BIT_1.fz_bit_foo*/
  233. int r549jvm_if_x_eq(void){
  234. int R=0;
  235. T0* _cp=NULL;
  236. T0* _ca=NULL;
  237. int _idx=0;
  238. _ca=oBC364code_attribute;
  239. _cp=oBC364constant_pool;
  240. _idx=r95idx_methodref3(((T95*)_cp),((T0*)ms226_470),((T0*)ms227_470),((T0*)ms234_470));
  241. r256opcode_invokevirtual(((T256*)_ca),_idx,0);
  242. R=r256opcode_ifne(((T256*)_ca));
  243. return R;
  244. }
  245. /*No:TYPE_BIT_1.has_creation*/
  246. /*No:TYPE_BIT_1.is_anchored*/
  247. /*No:TYPE_BIT_1.is_array*/
  248. int r549is_a(T549* C,T0* a1){
  249. int R=0;
  250. T0* _other_bit=NULL;
  251. /*IF*/if (X291is_bit(a1)) {
  252. _other_bit=a1;
  253. if(NULL!=(_other_bit))switch(((T0*)_other_bit)->id) {
  254. case 549: case 558: 
  255. break;
  256. default:
  257. _other_bit=NULL;
  258. };/*IF*/if ((/*(IRF4.6nb*/(((T342*)((T342*)((((T549*)C))->_n/*16*/))))->_value/*16*//*)*/)<=(X609nb(_other_bit))) {
  259. R=1;
  260. }
  261. else {
  262. r683add_type((T0*)C,((T0*)ms71_470));
  263. r683add_type(a1,((T0*)ms1_609));
  264. }
  265. /*FI*/}
  266. else {
  267. R=r605is_subclass_of(((T605*)(r549base_class(C))),X291base_class(a1));
  268. /*IF*/if (R) {
  269. r683add_type((T0*)C,((T0*)ms71_470));
  270. r683add_type(a1,((T0*)ms67_470));
  271. }
  272. else {
  273. r549used_as_reference(C);
  274. }
  275. /*FI*/}
  276. /*FI*/return R;
  277. }
  278. void r549jvm_to_reference(T549* C){
  279. T0* _ca=NULL;
  280. T0* _type_bit_ref=NULL;
  281. int _idx=0;
  282. T0* _rc=NULL;
  283. _ca=oBC364code_attribute;
  284. _idx=r226fast_index_of(((T226*)(oBC609mem_ref_nb)),/*(IRF4.6nb*/(((T342*)((T342*)((((T549*)C))->_n/*16*/))))->_value/*16*//*)*/);
  285. _type_bit_ref=/*(IRF4.6item*/((((T41*)((T41*)(oBC609mem_type_bit_ref))))->_storage/*4*/)[_idx]/*)*/;
  286. _rc=r963run_class(((T963*)_type_bit_ref));
  287. _idx=r355fully_qualified_constant_pool_index(((T355*)_rc));
  288. r256opcode_new(((T256*)_ca),_idx);
  289. /*[IRF3.4opcode_dup_x1*/r256opcode(((T256*)_ca),90,1);
  290. /*]*/
  291. /*[IRF3.4opcode_swap*/r256opcode(((T256*)_ca),95,0);
  292. /*]*/
  293. _idx=r95idx_fieldref4(((T95*)(oBC364constant_pool)),_idx,((T0*)ms52_473),((T0*)ms235_470));
  294. r256opcode_putfield(((T256*)_ca),_idx,-(2));
  295. }
  296. void r549set_run_time_mark(T549* C){
  297. r7copy(((T7*)(oBC291tmp_string)),((T0*)ms78_470));
  298. r7append(((T7*)(oBC291tmp_string)),r2to_string(/*(IRF4.6nb*/(((T342*)((T342*)((((T549*)C))->_n/*16*/))))->_value/*16*//*)*/));
  299. C->_run_time_mark=r902item(oBC291tmp_string);
  300. }
  301. /*No:TYPE_BIT_1.us_put_0*/
  302. /*No:TYPE_BIT_1.run_type*/
  303. /*No:TYPE_BIT_1.is_pointer*/
  304. /*No:TYPE_BIT_1.is_dummy_expanded*/
  305. int r549jvm_push_default(T549* C){
  306. int R=0;
  307. T0* _cp=NULL;
  308. T0* _ca=NULL;
  309. int _idx=0;
  310. _ca=oBC364code_attribute;
  311. _cp=oBC364constant_pool;
  312. _idx=r95idx_class2(((T95*)_cp),((T0*)ms226_470));
  313. r256opcode_new(((T256*)_ca),_idx);
  314. /*[IRF3.4opcode_dup*/r256opcode(((T256*)_ca),89,1);
  315. /*]*/
  316. r256opcode_push_integer(((T256*)_ca),/*(IRF4.6nb*/(((T342*)((T342*)((((T549*)C))->_n/*16*/))))->_value/*16*//*)*/);
  317. _idx=r95idx_methodref3(((T95*)_cp),((T0*)ms226_470),((T0*)ms167_470),((T0*)ms159_470));
  318. r256opcode_invokespecial(((T256*)_ca),_idx,0);
  319. return R;
  320. }
  321. /*No:TYPE_BIT_1.is_string*/
  322. /*No:TYPE_BIT_1.is_like_feature*/
  323. /*No:TYPE_BIT_1.is_like_current*/
  324. /*No:TYPE_BIT_1.us_put_1*/
  325. void r549make(T549* C,T0* a1,T0* a2){
  326. C->_start_position=a1;
  327. C->_n=a2;
  328. r549set_run_time_mark(C);
  329. C->_written_mark=(((T549*)C))->_run_time_mark/*12*/;
  330. }
  331. /*No:TYPE_BIT_1.jvm_return_code*/
  332. /*No:TYPE_BIT_1.jvm_xnewarray*/
  333. /*No:TYPE_BIT_1.jvm_descriptor_in*/
  334. /*No:TYPE_BIT_1.start_position*/
  335. /*No:TYPE_BIT_1.fz_inako*/
  336. /*No:TYPE_BIT_1.is_user_expanded*/
  337. /*No:TYPE_BIT_1.is_character*/
  338. /*No:TYPE_BIT_1.written_mark*/
  339. /*No:TYPE_BIT_1.is_run_type*/
  340. T0* r549to_runnable(T549* C,T0* a1){
  341. T0* R=NULL;
  342. R=(T0*)C;
  343. r549to_runnable_1_2(C);
  344. return R;
  345. }
  346. /*No:TYPE_BIT_1.is_formal_generic*/
  347. T0* r549generic_list(T549* C){
  348. T0* R=NULL;
  349. r549fatal_error_generic_list(C);
  350. return R;
  351. }
  352. /*No:TYPE_BIT_1.is_real*/
  353. /*No:TYPE_BIT_1.us_bitn*/
  354. /*No:TYPE_BIT_1.fz_a0*/
  355. /*No:TYPE_BIT_1.is_bit*/
  356. void r549fatal_error_generic_list(T549* C){
  357. r683add_type((T0*)C,((T0*)ms12_291));
  358. r683print_as_fatal_error(((T683*)(oBC364eh)));
  359. }
  360. void r549to_runnable_1_2(T549* C){
  361. T0* _rf=NULL;
  362. T0* _rc=NULL;
  363. _rc=r549run_class(C);
  364. _rf=r355get_feature_with(((T355*)_rc),((T0*)ms105_473));
  365. _rf=r355get_feature_with(((T355*)_rc),((T0*)ms106_473));
  366. }
  367. /*No:TYPE_BIT_1.jvm_check_class_invariant*/
  368. /*No:TYPE_BIT_1.fz_a1*/
  369. /*No:TYPE_BIT_1.us_bit_n*/
  370. /*No:TYPE_BIT_1.jvm_xaload*/
  371. T0*oBC291tmp_string=NULL;
  372. T0* r549smallest_ancestor(T549* C,T0* a1){
  373. T0* R=NULL;
  374. T0* _other_bit=NULL;
  375. _other_bit=a1;
  376. if(NULL!=(_other_bit))switch(((T0*)_other_bit)->id) {
  377. case 549: case 558: 
  378. break;
  379. default:
  380. _other_bit=NULL;
  381. };/*IF*/if ((/*(IRF4.6nb*/(((T342*)((T342*)((((T549*)C))->_n/*16*/))))->_value/*16*//*)*/)<(X609nb(_other_bit))) {
  382. R=(T0*)C;
  383. }
  384. else {
  385. R=a1;
  386. }
  387. /*FI*/return R;
  388. }
  389. /*No:TYPE_BIT_1.fz_a2*/
  390. /*No:TYPE_BIT_1.fz_35*/
  391. /*No:TYPE_BIT_1.is_boolean*/
  392. /*No:TYPE_BIT_1.fz_a3*/
  393. /*No:TYPE_BIT_1.is_double*/
  394. int r549jvm_stack_space(void){
  395. int R=0;
  396. /*IF*//*AF*//*AE*/
  397. R=1;
  398. /*FI*/return R;
  399. }
  400. /*No:TYPE_BIT_1.fz_27*/
  401. /*No:TYPE_BIT_1.fz_a4*/
  402. T0* r549run_class(T549* C){
  403. T0* R=NULL;
  404. R=r604run_class((T0*)C);
  405. return R;
  406. }
  407. /*No:TYPE_BIT_1.run_time_mark*/
  408. int r549is_a_in(T549* C,T0* a1,T0* a2){
  409. int R=0;
  410. T0* _ct=NULL;
  411. T0* _t2=NULL;
  412. T0* _t1=NULL;
  413. /*IF*/if (((((T549*)C))->_written_mark/*8*/)==((void*)(X291written_mark(a1)))) {
  414. R=1;
  415. }
  416. else {
  417. _ct=(((T355*)((T355*)a2)))->_current_type/*0*/;
  418. _t1=r549to_runnable(C,_ct);
  419. _t2=X291to_runnable(a1,_ct);
  420. /*IF*/if ((X291run_time_mark(_t1))==((void*)(X291run_time_mark(_t2)))) {
  421. R=1;
  422. }
  423. else {
  424. R=X291is_a(_t1,_t2);
  425. }
  426. /*FI*/}
  427. /*FI*/return R;
  428. }
  429. T0* r549look_up_for(T549* C,T0* a1,T0* a2){
  430. T0* R=NULL;
  431. R=r605look_up_for(((T605*)(r549base_class(C))),a1,a2);
  432. return R;
  433. }
  434. int r549jvm_convert_to(T549* C,T0* a1){
  435. int R=0;
  436. T0* _cp=NULL;
  437. T0* _ca=NULL;
  438. T0* _other_bit=NULL;
  439. int _point3=0;
  440. int _point2=0;
  441. int _point1=0;
  442. int _loc2=0;
  443. int _loc1=0;
  444. int _idx=0;
  445. int _space=0;
  446. /*IF*/if (X291is_reference(a1)) {
  447. r549jvm_to_reference(C);
  448. }
  449. else {
  450. _ca=oBC364code_attribute;
  451. _cp=oBC364constant_pool;
  452. _other_bit=a1;
  453. if(NULL!=(_other_bit))switch(((T0*)_other_bit)->id) {
  454. case 549: case 558: 
  455. break;
  456. default:
  457. _other_bit=NULL;
  458. };_space=X609jvm_push_default(_other_bit);
  459. /*[IRF3.4opcode_swap*/r256opcode(((T256*)_ca),95,0);
  460. /*]*/
  461. _loc1=r256extra_local_size1(((T256*)_ca));
  462. r256opcode_push_integer(((T256*)_ca),X609nb(_other_bit));
  463. r256opcode_istore(((T256*)_ca),_loc1);
  464. _loc2=r256extra_local_size1(((T256*)_ca));
  465. r256opcode_push_integer(((T256*)_ca),/*(IRF4.6nb*/(((T342*)((T342*)((((T549*)C))->_n/*16*/))))->_value/*16*//*)*/);
  466. r256opcode_istore(((T256*)_ca),_loc2);
  467. r256opcode_iload(((T256*)_ca),_loc2);
  468. _point1=/*(IRF4.9program_counter*//*(IRF4.6count*/((((T226*)((T226*)(oBC256code))))->_upper/*8*/)+(1)/*)*//*)*/;
  469. _point2=r256opcode_ifeq(((T256*)_ca));
  470. r256opcode_iinc(((T256*)_ca),_loc1,255);
  471. r256opcode_iinc(((T256*)_ca),_loc2,255);
  472. /*[IRF3.4opcode_dup2*/r256opcode(((T256*)_ca),92,2);
  473. /*]*/
  474. r256opcode_iload(((T256*)_ca),_loc2);
  475. _idx=r95idx_methodref3(((T95*)_cp),((T0*)ms226_470),((T0*)ms228_470),((T0*)ms229_470));
  476. r256opcode_invokevirtual(((T256*)_ca),_idx,0);
  477. _point3=r256opcode_ifne(((T256*)_ca));
  478. /*[IRF3.4opcode_pop*/r256opcode(((T256*)_ca),87,-(1));
  479. /*]*/
  480. r256opcode_iload(((T256*)_ca),_loc2);
  481. r256opcode_goto_backward(((T256*)_ca),_point1);
  482. r256resolve_u2_branch(_point3);
  483. r256opcode_iload(((T256*)_ca),_loc1);
  484. _idx=r95idx_methodref3(((T95*)_cp),((T0*)ms226_470),((T0*)ms230_470),((T0*)ms159_470));
  485. r256opcode_invokevirtual(((T256*)_ca),_idx,0);
  486. r256opcode_iload(((T256*)_ca),_loc2);
  487. r256opcode_goto_backward(((T256*)_ca),_point1);
  488. r256resolve_u2_branch(_point2);
  489. /*[IRF3.4opcode_pop*/r256opcode(((T256*)_ca),87,-(1));
  490. /*]*/
  491. }
  492. /*FI*/return R;
  493. }
  494. /*No:TYPE_BIT_1.fz_a6*/
  495. /*No:TYPE_BIT_1.expanded_initializer*/
  496. /*No:TYPE_BIT_1.fz_a7*/
  497. int r549jvm_if_x_ne(void){
  498. int R=0;
  499. T0* _cp=NULL;
  500. T0* _ca=NULL;
  501. int _idx=0;
  502. _ca=oBC364code_attribute;
  503. _cp=oBC364constant_pool;
  504. _idx=r95idx_methodref3(((T95*)_cp),((T0*)ms226_470),((T0*)ms227_470),((T0*)ms234_470));
  505. r256opcode_invokevirtual(((T256*)_ca),_idx,0);
  506. R=r256opcode_ifeq(((T256*)_ca));
  507. return R;
  508. }
  509. T0*oBC609mem_type_bit_ref=NULL;
  510. /*No:TYPE_BIT_1.fz_dot*/
  511. /*No:TYPE_BIT_1.is_generic*/
  512. void r549jvm_write_local(int a1){
  513. T0* _cp=NULL;
  514. T0* _ca=NULL;
  515. int _idx=0;
  516. _ca=oBC364code_attribute;
  517. _cp=oBC364constant_pool;
  518. _idx=(((T95*)((T95*)_cp)))->_idx_java_lang_object/*8*/;
  519. _idx=r95idx_methodref1(((T95*)_cp),_idx,((T0*)ms232_470),((T0*)ms233_470));
  520. r256opcode_invokevirtual(((T256*)_ca),_idx,0);
  521. r256opcode_astore(((T256*)(oBC364code_attribute)),a1);
  522. }
  523. void r549jvm_initialize_local(T549* C,int a1){
  524. int _space=0;
  525. _space=r549jvm_push_default(C);
  526. r256opcode_astore(((T256*)(oBC364code_attribute)),a1);
  527. }
  528. void r549used_as_reference(T549* C){
  529. T0* _rc=NULL;
  530. T0* _type_bit_ref=NULL;
  531. /*IF*/if (r226fast_has(((T226*)(oBC609mem_ref_nb)),/*(IRF4.6nb*/(((T342*)((T342*)((((T549*)C))->_n/*16*/))))->_value/*16*//*)*/)) {
  532. }
  533. else {
  534. r226add_last(((T226*)(oBC609mem_ref_nb)),/*(IRF4.6nb*/(((T342*)((T342*)((((T549*)C))->_n/*16*/))))->_value/*16*//*)*/);
  535. {T963*n=malloc(sizeof(*n));
  536. *n=M963;
  537. r963make(n,(T0*)C);
  538. _type_bit_ref=(T0*)n;
  539. }
  540. r41add_last(((T41*)(oBC609mem_type_bit_ref)),_type_bit_ref);
  541. _rc=r963run_class(((T963*)_type_bit_ref));
  542. r355set_at_run_time(((T355*)_rc));
  543. }
  544. /*FI*/}
  545. /*No:TYPE_BIT_1.fz_a8*/
  546. /*No:TYPE_BIT_1.fz_a9*/
  547. /*No:TYPE_BIT_1.is_reference*/
  548. T0* r549base_class(T549* C){
  549. T0* R=NULL;
  550. T0* _bcn=NULL;
  551. _bcn=r549base_class_name();
  552. /*IF*/if ((_bcn)!=((void*)(NULL))) {
  553. R=r451base_class(((T451*)_bcn));
  554. }
  555. else {
  556. /*[IRF3.6append*/{T0* b1=((T0*)ms3_291);
  557. r7append(((T7*)(oBC683explanation)),b1);
  558. }/*]*/
  559. r683add_type((T0*)C,((T0*)ms67_470));
  560. r683print_as_fatal_error(((T683*)(oBC364eh)));
  561. }
  562. /*FI*/return R;
  563. }
  564. /*No:TYPE_BIT_1.jvm_xastore*/
  565. /*No:TYPE_BIT_1.is_any*/
  566. /*No:TYPE_BIT_1.jvm_method_flags*/
  567. int fBC609base_class_name=0;
  568. T0*oBC609base_class_name=NULL;
  569. T0* r549base_class_name(void){
  570. if (fBC609base_class_name==0){
  571. T0* R=NULL;
  572. fBC609base_class_name=1;
  573. {T451*n=malloc(sizeof(*n));
  574. *n=M451;
  575. r451make(n,((T0*)ms4_473),NULL);
  576. R=(T0*)n;
  577. }
  578. oBC609base_class_name=R;}
  579. return oBC609base_class_name;}
  580. /*No:TYPE_BIT_1.jvm_push_local*/
  581. /*No:TYPE_BIT_1.is_expanded*/
  582. /*No:TYPE_BIT_1.is_basic_eiffel_expanded*/
  583. /*No:TYPE_BIT_1.is_none*/
  584. /*No:TYPE_BIT_1.is_integer*/
  585. T0*oBC609mem_ref_nb=NULL;
  586. T0* r526add_comment(T526* C,T0* a1){
  587. T0* R=NULL;
  588. /*IF*/if (((a1)==((void*)(NULL)))||((/*(IRF4.6count*/r52count(((T52*)((((T393*)((T393*)a1)))->_list/*4*/)))/*)*/)==(0))) {
  589. R=(T0*)C;
  590. }
  591. /*AF*/else {
  592. {T46*n=malloc(sizeof(*n));
  593. *n=M46;
  594. r46make(n,(T0*)C,a1);
  595. R=(T0*)n;
  596. }
  597. }
  598. /*FI*/return R;
  599. }
  600. /*No:E_RETRY.make*/
  601. /*No:E_RETRY.start_position*/
  602. /*No:E_RETRY.fz_jvm_error*/
  603. T0* r526to_runnable(T526* C,T0* a1){
  604. T0* R=NULL;
  605. /*IF*/if (((((T526*)C))->_run_compound/*4*/)==((void*)(NULL))) {
  606. C->_run_compound=a1;
  607. R=(T0*)C;
  608. }
  609.  else if (((((T526*)C))->_run_compound/*4*/)==((void*)(a1))) {
  610. R=(T0*)C;
  611. }
  612. else {
  613. {T526*n=malloc(sizeof(*n));
  614. *n=M526;
  615. /*[IRF3.3make*/((((T526*)(n)))->_start_position)=((((T526*)C))->_start_position/*8*/);
  616. /*]*/
  617. R=(T0*)n;
  618. }
  619. R=r526to_runnable(((T526*)R),a1);
  620. }
  621. /*FI*/return R;
  622. }
  623. /*No:E_RETRY.run_compound*/
  624. void r526compile_to_jvm(T526* C){
  625. r683add_position((((T526*)C))->_start_position/*8*/);
  626. /*[IRF3.6fatal_error*/{T0* b1=((T0*)ms76_470);
  627. r683fatal_error(((T683*)(oBC364eh)),b1);
  628. }/*]*/
  629. }
  630. /*No:E_RETRY.is_pre_computable*/
  631. /*No:E_RETRY.use_current*/
  632. void r526error(T0* a1,T0* a2){
  633. r683add_position(a1);
  634. r683error(((T683*)(oBC364eh)),a2);
  635. }
  636. /*No:E_RETRY.fatal_error*/
  637. /*No:E_RETRY.end_mark_comment*/
  638. /*No:E_RETRY.afd_check*/
  639. /*No:CHECK_INVARIANT.fz_bad_assertion*/
  640. T0* r623runnable(T0* a1,T0* a2,T0* a3){
  641. T0* R=NULL;
  642. T0* _a=NULL;
  643. int _i=0;
  644. /*IF*/if (!(r608empty(((T608*)a1)))) {
  645. R=r608twin(((T608*)a1));
  646. _i=(((T608*)((T608*)R)))->_upper/*8*/;
  647. while (!((_i)==(0))) {
  648. r604push(((T604*)(oBC364small_eiffel)),a3);
  649. _a=r348to_runnable(((T348*)(r608item(((T608*)R),_i))),a2);
  650. /*IF*/if ((_a)==((void*)(NULL))) {
  651. r623error(r348start_position(((T348*)(r608item(((T608*)R),_i)))),((T0*)ms57_470));
  652. }
  653. else {
  654. /*[IRF3.6put*/{T608* C1=((T608*)R);
  655. T0* b1=_a;
  656. int b2=_i;
  657. ((((T608*)C1))->_storage/*0*/)[(b2)-((((T608*)C1))->_lower/*12*/)]=(b1);
  658. }/*]*/
  659. }
  660. /*FI*/r604pop(((T604*)(oBC364small_eiffel)));
  661. _i=(_i)-(1);
  662. }
  663. }
  664. /*FI*/return R;
  665. }
  666. void r623make(T623* C,T0* a1,T0* a2,T0* a3){
  667. C->_start_position=a1;
  668. C->_header_comment=a2;
  669. C->_list=a3;
  670. }
  671. /*No:CHECK_INVARIANT.nb_errors*/
  672. /*No:CHECK_INVARIANT.start_position*/
  673. T0* r623to_runnable(T623* C,T0* a1){
  674. T0* R=NULL;
  675. /*IF*/if (((((T623*)C))->_current_type/*12*/)==((void*)(NULL))) {
  676. C->_current_type=a1;
  677. /*IF*/if (((((T623*)C))->_list/*8*/)!=((void*)(NULL))) {
  678. C->_list=r623runnable((((T623*)C))->_list/*8*/,a1,r604top_rf(((T604*)(oBC364small_eiffel))));
  679. }
  680. /*FI*//*IF*/if ((/*(IRF4.9nb_errors*/(((T683*)((T683*)(oBC364eh))))->_nb_errors/*0*//*)*/)==(0)) {
  681. R=(T0*)C;
  682. }
  683. /*FI*/}
  684. else {
  685. R=r623twin(C);
  686. /*[IRF3.3set_current_type*/((((T623*)(((T623*)R))))->_current_type)=(NULL);
  687. /*]*/
  688. R=r623to_runnable(((T623*)R),a1);
  689. }
  690. /*FI*/return R;
  691. }
  692. T0* r623twin(T623* C){
  693. T0* R=NULL;
  694. R=malloc(sizeof(*C));
  695. *((T623*)R)=*C;
  696. return R;
  697. }
  698. /*No:CHECK_INVARIANT.set_current_type*/
  699. /*No:CHECK_INVARIANT.list*/
  700. /*No:CHECK_INVARIANT.current_type*/
  701. /*No:CHECK_INVARIANT.header_comment*/
  702. void r623compile_to_jvm(T623* C,int a1){
  703. T0* _ca=NULL;
  704. int _i=0;
  705. int _point_true=0;
  706. /*IF*/if (((((T623*)C))->_list/*8*/)!=((void*)(NULL))) {
  707. _ca=oBC364code_attribute;
  708. r256check_opening(((T256*)_ca));
  709. /*IF*/if (a1) {
  710. _i=1;
  711. while (!((_i)>((((T608*)((T608*)((((T623*)C))->_list/*8*/))))->_upper/*8*/))) {
  712. r348compile_to_jvm(((T348*)(r608item(((T608*)((((T623*)C))->_list/*8*/)),_i))),1);
  713. _i=(_i)+(1);
  714. }
  715. }
  716. else {
  717. /*[IRF3.3clear*/((((T226*)(((T226*)(oBC596points_false)))))->_upper)=(-(1));
  718. /*]*/
  719. _i=1;
  720. while (!((_i)>((((T608*)((T608*)((((T623*)C))->_list/*8*/))))->_upper/*8*/))) {
  721. r348compile_to_jvm(((T348*)(r608item(((T608*)((((T623*)C))->_list/*8*/)),_i))),0);
  722. r226add_last(((T226*)(oBC596points_false)),r256opcode_ifeq(((T256*)_ca)));
  723. _i=(_i)+(1);
  724. }
  725. /*[IRF3.4opcode_iconst_1*/r256opcode(((T256*)_ca),4,1);
  726. /*]*/
  727. _point_true=r256opcode_goto(((T256*)_ca));
  728. r256resolve_with(oBC596points_false);
  729. /*[IRF3.4opcode_iconst_0*/r256opcode(((T256*)_ca),3,1);
  730. /*]*/
  731. r256resolve_u2_branch(_point_true);
  732. }
  733. /*FI*/r256check_closing(((T256*)_ca));
  734. }
  735. /*FI*/}
  736. int r623is_pre_computable(T623* C){
  737. int R=0;
  738. int _i=0;
  739. /*IF*/if (((((T623*)C))->_list/*8*/)==((void*)(NULL))) {
  740. R=1;
  741. }
  742. else {
  743. _i=(((T608*)((T608*)((((T623*)C))->_list/*8*/))))->_upper/*8*/;
  744. R=1;
  745. while (!((!(R))||((_i)==(0)))) {
  746. R=r348is_pre_computable(((T348*)(r608item(((T608*)((((T623*)C))->_list/*8*/)),_i))));
  747. _i=(_i)-(1);
  748. }
  749. }
  750. /*FI*/return R;
  751. }
  752. int r623use_current(T623* C){
  753. int R=0;
  754. int _i=0;
  755. /*IF*/if (((((T623*)C))->_list/*8*/)!=((void*)(NULL))) {
  756. _i=(((T608*)((T608*)((((T623*)C))->_list/*8*/))))->_upper/*8*/;
  757. while (!((R)||((_i)==(0)))) {
  758. R=r348use_current(((T348*)(r608item(((T608*)((((T623*)C))->_list/*8*/)),_i))));
  759. _i=(_i)-(1);
  760. }
  761. }
  762. /*FI*/return R;
  763. }
  764. void r623error(T0* a1,T0* a2){
  765. r683add_position(a1);
  766. r683error(((T683*)(oBC364eh)),a2);
  767. }
  768. void r623afd_check(T623* C){
  769. int _i=0;
  770. /*IF*/if (((((T623*)C))->_list/*8*/)!=((void*)(NULL))) {
  771. _i=(((T608*)((T608*)((((T623*)C))->_list/*8*/))))->_upper/*8*/;
  772. while (!((_i)==(0))) {
  773. r348afd_check(((T348*)(r608item(((T608*)((((T623*)C))->_list/*8*/)),_i))));
  774. _i=(_i)-(1);
  775. }
  776. }
  777. /*FI*/}
  778. /*No:RUN_FEATURE_5.arguments*/
  779. /*No:RUN_FEATURE_5.ucs_true*/
  780. void r869routine_mapping_jvm(T869* C){
  781. int _stack_level=0;
  782. int _idx=0;
  783. T0* _ct=NULL;
  784. T0* _rt=NULL;
  785. _ct=(((T869*)C))->_current_type/*4*/;
  786. r228push_target_as_target(((T228*)(oBC364jvm)));
  787. _stack_level=-((1)+(r228push_arguments(((T228*)(oBC364jvm)))));
  788. _rt=(((T869*)C))->_result_type/*24*/;
  789. /*IF*/if ((_rt)!=((void*)(NULL))) {
  790. _stack_level=(_stack_level)+(X291jvm_stack_space(_rt));
  791. }
  792. /*FI*/_idx=r95idx_methodref(((T95*)(oBC364constant_pool)),(T0*)C);
  793. r355jvm_invoke(((T355*)(X291run_class(_ct))),_idx,_stack_level);
  794. }
  795. /*No:RUN_FEATURE_5.actuals_clients*/
  796. T0* r869jvm_descriptor(T869* C){
  797. T0* R=NULL;
  798. /*[IRF3.3clear*/((((T7*)(((T7*)(oBC496tmp_jvm_descriptor)))))->_count)=(0);
  799. /*]*/
  800. /*[IRF3.4update_tmp_jvm_descriptor*/r869routine_update_tmp_jvm_descriptor(C);
  801. /*]*/
  802. R=oBC496tmp_jvm_descriptor;
  803. return R;
  804. }
  805. void r869method_info_start(T869* C){
  806. int _flags=0;
  807. _flags=X291jvm_method_flags((((T869*)C))->_current_type/*4*/);
  808. r506start(((T506*)(oBC364method_info)),_flags,X776to_key((((T869*)C))->_name/*16*/),r869jvm_descriptor(C));
  809. }
  810. /*No:RUN_FEATURE_5.ucs_in_computation*/
  811. void r869routine_update_tmp_jvm_descriptor(T869* C){
  812. T0* _rt=NULL;
  813. T0* _ct=NULL;
  814. r7extend(((T7*)(oBC496tmp_jvm_descriptor)),'\50');
  815. _ct=(((T869*)C))->_current_type/*4*/;
  816. X291jvm_target_descriptor_in(_ct,oBC496tmp_jvm_descriptor);
  817. /*IF*/if (((((T869*)C))->_arguments/*20*/)!=((void*)(NULL))) {
  818. r31jvm_descriptor_in(((T31*)((((T869*)C))->_arguments/*20*/)),oBC496tmp_jvm_descriptor);
  819. }
  820. /*FI*/_rt=(((T869*)C))->_result_type/*24*/;
  821. /*IF*/if ((_rt)==((void*)(NULL))) {
  822. r7append(((T7*)(oBC496tmp_jvm_descriptor)),((T0*)ms153_470));
  823. }
  824. else {
  825. _rt=X291run_type(_rt);
  826. r7extend(((T7*)(oBC496tmp_jvm_descriptor)),'\51');
  827. X291jvm_descriptor_in(_rt,oBC496tmp_jvm_descriptor);
  828. }
  829. /*FI*/}
  830. void r869make(T869* C,T0* a1,T0* a2,T0* a3){
  831. C->_current_type=a1;
  832. C->_name=a2;
  833. C->_base_feature=a3;
  834. r199put(((T199*)((((T355*)((T355*)(r869run_class(C)))))->_feature_dictionary/*24*/)),(T0*)C,X776to_key(a2));
  835. r604incr_magic_count(((T604*)(oBC364small_eiffel)));
  836. C->_use_current_state=1005;
  837. r604push(((T604*)(oBC364small_eiffel)),(T0*)C);
  838. r869initialize(C);
  839. r604pop(((T604*)(oBC364small_eiffel)));
  840. }
  841. void r869std_compute_use_current(T869* C){
  842. /*IF*/if (((((T869*)C))->_use_current_state/*40*/)==(1006)) {
  843. /*IF*/if (((((T869*)C))->_require_assertion/*28*/)!=((void*)(NULL))) {
  844. /*IF*/if (r567use_current(((T567*)((((T869*)C))->_require_assertion/*28*/)))) {
  845. C->_use_current_state=1004;
  846. }
  847. /*FI*/}
  848. /*FI*/}
  849. /*FI*//*IF*/if (((((T869*)C))->_use_current_state/*40*/)==(1006)) {
  850. /*IF*/if (((((T869*)C))->_routine_body/*32*/)!=((void*)(NULL))) {
  851. /*IF*/if (r592use_current(((T592*)((((T869*)C))->_routine_body/*32*/)))) {
  852. C->_use_current_state=1004;
  853. }
  854. /*FI*/}
  855. /*FI*/}
  856. /*FI*//*IF*/if (((((T869*)C))->_use_current_state/*40*/)==(1006)) {
  857. /*IF*/if (((((T869*)C))->_ensure_assertion/*36*/)!=((void*)(NULL))) {
  858. /*IF*/if (r633use_current(((T633*)((((T869*)C))->_ensure_assertion/*36*/)))) {
  859. C->_use_current_state=1004;
  860. }
  861. /*FI*/}
  862. /*FI*/}
  863. /*FI*//*IF*/if (((((T869*)C))->_use_current_state/*40*/)==(1006)) {
  864. C->_use_current_state=1003;
  865. }
  866. /*FI*/}
  867. /*No:RUN_FEATURE_5.name*/
  868. int r869arg_count(T869* C){
  869. int R=0;
  870. /*IF*/if (((((T869*)C))->_arguments/*20*/)!=((void*)(NULL))) {
  871. R=/*(IRF4.6count*/(((T65*)((T65*)((((T31*)((T31*)((((T869*)C))->_arguments/*20*/))))->_flat_list/*12*/))))->_upper/*12*//*)*/;
  872. }
  873. /*FI*/return R;
  874. }
  875. void r869routine_afd_check(T869* C){
  876. /*IF*/if (((((T869*)C))->_require_assertion/*28*/)!=((void*)(NULL))) {
  877. r567afd_check(((T567*)((((T869*)C))->_require_assertion/*28*/)));
  878. }
  879. /*FI*//*IF*/if (((((T869*)C))->_routine_body/*32*/)!=((void*)(NULL))) {
  880. r592afd_check(((T592*)((((T869*)C))->_routine_body/*32*/)));
  881. }
  882. /*FI*//*IF*/if (((((T869*)C))->_ensure_assertion/*36*/)!=((void*)(NULL))) {
  883. r633afd_check(((T633*)((((T869*)C))->_ensure_assertion/*36*/)));
  884. }
  885. /*FI*/}
  886. /*No:RUN_FEATURE_5.local_vars*/
  887. /*No:RUN_FEATURE_5.base_feature*/
  888. /*No:RUN_FEATURE_5.start_position*/
  889. int r869jvm_max_locals(T869* C){
  890. int R=0;
  891. R=X291jvm_stack_space((((T869*)C))->_current_type/*4*/);
  892. /*IF*/if (((((T869*)C))->_arguments/*20*/)!=((void*)(NULL))) {
  893. R=(R)+(r31jvm_stack_space(((T31*)((((T869*)C))->_arguments/*20*/))));
  894. }
  895. /*FI*//*IF*/if (((((T869*)C))->_local_vars/*48*/)!=((void*)(NULL))) {
  896. R=(R)+(r620jvm_stack_space(((T620*)((((T869*)C))->_local_vars/*48*/))));
  897. }
  898. /*FI*//*IF*/if (((((T869*)C))->_result_type/*24*/)!=((void*)(NULL))) {
  899. R=(R)+(X291jvm_stack_space((((T869*)C))->_result_type/*24*/));
  900. }
  901. /*FI*/return R;
  902. }
  903. int r869jvm_result_offset(T869* C){
  904. int R=0;
  905. R=X291jvm_stack_space((((T869*)C))->_current_type/*4*/);
  906. /*IF*/if (((((T869*)C))->_arguments/*20*/)!=((void*)(NULL))) {
  907. R=(R)+(r31jvm_stack_space(((T31*)((((T869*)C))->_arguments/*20*/))));
  908. }
  909. /*FI*//*IF*/if (((((T869*)C))->_local_vars/*48*/)!=((void*)(NULL))) {
  910. R=(R)+(r620jvm_stack_space(((T620*)((((T869*)C))->_local_vars/*48*/))));
  911. }
  912. /*FI*/return R;
  913. }
  914. /*No:RUN_FEATURE_5.ensure_assertion*/
  915. int r869is_exported_in(T869* C,T0* a1){
  916. int R=0;
  917. R=r636gives_permission_to(((T636*)(r869clients(C))),a1);
  918. return R;
  919. }
  920. void r869jvm_define_opening(T869* C){
  921. T0* _t=NULL;
  922. /*IF*/if (((((T869*)C))->_result_type/*24*/)!=((void*)(NULL))) {
  923. _t=X291run_type((((T869*)C))->_result_type/*24*/);
  924. X291jvm_initialize_local(_t,r869jvm_result_offset(C));
  925. }
  926. /*FI*//*IF*/if (((((T869*)C))->_local_vars/*48*/)!=((void*)(NULL))) {
  927. r620jvm_initialize(((T620*)((((T869*)C))->_local_vars/*48*/)));
  928. }
  929. /*FI*//*IF*/if (r590ensure_check(((T590*)(oBC364run_control)))) {
  930. /*IF*/if (((((T869*)C))->_ensure_assertion/*36*/)!=((void*)(NULL))) {
  931. r633compile_to_jvm_old(((T633*)((((T869*)C))->_ensure_assertion/*36*/)));
  932. }
  933. /*FI*/}
  934. /*FI*//*IF*/if (((((T869*)C))->_require_assertion/*28*/)!=((void*)(NULL))) {
  935. r567compile_to_jvm(((T567*)((((T869*)C))->_require_assertion/*28*/)));
  936. }
  937. /*FI*/}
  938. /*No:RUN_FEATURE_5.compute_use_current*/
  939. /*No:RUN_FEATURE_5.result_type*/
  940. /*No:RUN_FEATURE_5.jvm_field_or_method*/
  941. int r869jvm_argument_offset(T869* C,T0* a1){
  942. int R=0;
  943. R=X291jvm_stack_space((((T869*)C))->_current_type/*4*/);
  944. R=(R)+(r31jvm_offset_of(((T31*)((((T869*)C))->_arguments/*20*/)),a1));
  945. return R;
  946. }
  947. /*No:RUN_FEATURE_5.is_static*/
  948. void r869add_client(T869* C,T0* a1){
  949. int _i=0;
  950. /*IF*/if (((((T869*)C))->_actuals_clients/*12*/)==((void*)(NULL))) {
  951. {T187*n=malloc(sizeof(*n));
  952. *n=M187;
  953. r187with_capacity(n,4);
  954. C->_actuals_clients=(T0*)n;
  955. }
  956. r187add_last(((T187*)((((T869*)C))->_actuals_clients/*12*/)),a1);
  957. }
  958. else {
  959. _i=r187fast_index_of(((T187*)((((T869*)C))->_actuals_clients/*12*/)),a1);
  960. /*IF*/if ((_i)>((((T187*)((T187*)((((T869*)C))->_actuals_clients/*12*/))))->_upper/*8*/)) {
  961. r187add_last(((T187*)((((T869*)C))->_actuals_clients/*12*/)),a1);
  962. }
  963. /*FI*/}
  964. /*FI*/r355add_client(((T355*)(r869run_class(C))),a1);
  965. }
  966. /*No:RUN_FEATURE_5.require_assertion*/
  967. /*No:RUN_FEATURE_5.use_current_state*/
  968. /*No:RUN_FEATURE_5.can_be_dropped*/
  969. void r869jvm_define_closing(T869* C){
  970. /*IF*/if (r869use_current(C)) {
  971. }
  972. /*FI*//*IF*/if (r590ensure_check(((T590*)(oBC364run_control)))) {
  973. /*IF*/if (((((T869*)C))->_ensure_assertion/*36*/)!=((void*)(NULL))) {
  974. r633compile_to_jvm(((T633*)((((T869*)C))->_ensure_assertion/*36*/)),1);
  975. }
  976. /*FI*/}
  977. /*FI*//*IF*/if (((((T869*)C))->_result_type/*24*/)!=((void*)(NULL))) {
  978. X291jvm_push_local((((T869*)C))->_result_type/*24*/,r869jvm_result_offset(C));
  979. }
  980. /*FI*/}
  981. /*No:RUN_FEATURE_5.mapping_jvm*/
  982. /*No:RUN_FEATURE_5.current_type*/
  983. T0* r869run_class(T869* C){
  984. T0* R=NULL;
  985. R=X291run_class((((T869*)C))->_current_type/*4*/);
  986. return R;
  987. }
  988. /*No:RUN_FEATURE_5.static_value_mem*/
  989. /*No:RUN_FEATURE_5.fz_19*/
  990. /*No:RUN_FEATURE_5.ucs_not_computed*/
  991. void r869fall_down(T869* C){
  992. T0* _rf=NULL;
  993. T0* _sub_name=NULL;
  994. T0* _sub_bc=NULL;
  995. T0* _current_bc=NULL;
  996. T0* _sub_rc=NULL;
  997. T0* _current_rc=NULL;
  998. int _i=0;
  999. T0* _running=NULL;
  1000. _current_rc=X291run_class((((T869*)C))->_current_type/*4*/);
  1001. _running=(((T355*)((T355*)_current_rc)))->_running/*12*/;
  1002. /*IF*/if ((_running)!=((void*)(NULL))) {
  1003. _current_bc=X291base_class((((T869*)C))->_current_type/*4*/);
  1004. _i=(((T396*)((T396*)_running)))->_lower/*12*/;
  1005. while (!((_i)>((((T396*)((T396*)_running)))->_upper/*8*/))) {
  1006. _sub_rc=r396item(((T396*)_running),_i);
  1007. /*IF*/if ((_sub_rc)!=((void*)(_current_rc))) {
  1008. _sub_bc=X291base_class((((T355*)((T355*)_sub_rc)))->_current_type/*0*/);
  1009. _sub_name=r605new_name_of(((T605*)_sub_bc),_current_bc,(((T869*)C))->_name/*16*/);
  1010. _rf=r355get_feature(((T355*)_sub_rc),_sub_name);
  1011. }
  1012. /*FI*/_i=(_i)+(1);
  1013. }
  1014. }
  1015. /*FI*/}
  1016. /*No:RUN_FEATURE_5.routine_body*/
  1017. /*No:RUN_FEATURE_5.ucs_false*/
  1018. /*No:RUN_FEATURE_5.is_pre_computable*/
  1019. T0* r869clients(T869* C){
  1020. T0* R=NULL;
  1021. T0* _bfbc=NULL;
  1022. T0* _bc=NULL;
  1023. /*IF*/if (((((T869*)C))->_clients_memory/*8*/)==((void*)(NULL))) {
  1024. _bc=X291base_class((((T869*)C))->_current_type/*4*/);
  1025. _bfbc=(((T134*)((T134*)((((T869*)C))->_base_feature/*44*/))))->_base_class/*4*/;
  1026. /*IF*/if ((_bc)==((void*)(_bfbc))) {
  1027. R=(((T134*)((T134*)((((T869*)C))->_base_feature/*44*/))))->_clients/*24*/;
  1028. }
  1029. else {
  1030. R=r605clients_for(((T605*)_bc),(((T869*)C))->_name/*16*/);
  1031. }
  1032. /*FI*/C->_clients_memory=R;
  1033. }
  1034. else {
  1035. R=(((T869*)C))->_clients_memory/*8*/;
  1036. }
  1037. /*FI*/return R;
  1038. }
  1039. int r869use_current(T869* C){
  1040. int R=0;
  1041. {int z1=(((T869*)C))->_use_current_state/*40*/;
  1042.  
  1043. if((1004==z1)){
  1044. R=1;
  1045. }
  1046.  else 
  1047. if((1003==z1)){
  1048. }
  1049.  else 
  1050. if((1005==z1)){
  1051. C->_use_current_state=1006;
  1052. /*[IRF3.4compute_use_current*/r869std_compute_use_current(C);
  1053. /*]*/
  1054. R=r869use_current(C);
  1055. }
  1056.  else {R=1;
  1057. }}
  1058. return R;
  1059. }
  1060. void r869jvm_define(T869* C){
  1061. int _idx_flag=0;
  1062. int _branch=0;
  1063. _idx_flag=r916idx_fieldref_for_flag((T0*)C);
  1064. r869method_info_start(C);
  1065. r256opcode_getstatic(((T256*)(oBC364code_attribute)),_idx_flag,1);
  1066. _branch=r256opcode_ifne(((T256*)(oBC364code_attribute)));
  1067. /*[IRF3.4opcode_iconst_1*/r256opcode(((T256*)(oBC364code_attribute)),4,1);
  1068. /*]*/
  1069. r256opcode_putstatic(((T256*)(oBC364code_attribute)),_idx_flag,-(1));
  1070. r869jvm_define_opening(C);
  1071. /*IF*/if (((((T869*)C))->_routine_body/*32*/)!=((void*)(NULL))) {
  1072. r592compile_to_jvm(((T592*)((((T869*)C))->_routine_body/*32*/)));
  1073. }
  1074. /*FI*/r869jvm_define_closing(C);
  1075. r256resolve_u2_branch(_branch);
  1076. /*[IRF3.2opcode_return*//*[IRF3.6add_u1*/{int b1=177;
  1077. r226add_last(((T226*)(oBC256code)),b1);
  1078. }/*]*/
  1079. /*]*/
  1080. r506finish(((T506*)(oBC364method_info)));
  1081. }
  1082. int r869jvm_local_variable_offset(T869* C,T0* a1){
  1083. int R=0;
  1084. R=X291jvm_stack_space((((T869*)C))->_current_type/*4*/);
  1085. /*IF*/if (((((T869*)C))->_arguments/*20*/)!=((void*)(NULL))) {
  1086. R=(R)+(r31jvm_stack_space(((T31*)((((T869*)C))->_arguments/*20*/))));
  1087. }
  1088. /*FI*/R=(R)+(r620jvm_offset_of(((T620*)((((T869*)C))->_local_vars/*48*/)),a1));
  1089. return R;
  1090. }
  1091. /*No:RUN_FEATURE_5.clients_memory*/
  1092. void r869initialize(T869* C){
  1093. C->_arguments=(((T134*)((T134*)((((T869*)C))->_base_feature/*44*/))))->_arguments/*28*/;
  1094. /*IF*/if ((((((T869*)C))->_arguments/*20*/)!=((void*)(NULL)))&&((/*(IRF4.6count*/(((T65*)((T65*)((((T31*)((T31*)((((T869*)C))->_arguments/*20*/))))->_flat_list/*12*/))))->_upper/*12*//*)*/)>(0))) {
  1095. C->_arguments=r31to_runnable(((T31*)((((T869*)C))->_arguments/*20*/)),(((T869*)C))->_current_type/*4*/);
  1096. }
  1097. /*FI*/C->_local_vars=(((T134*)((T134*)((((T869*)C))->_base_feature/*44*/))))->_local_vars/*20*/;
  1098. /*IF*/if ((((((T869*)C))->_local_vars/*48*/)!=((void*)(NULL)))&&((/*(IRF4.6count*/(((T733*)((T733*)((((T620*)((T620*)((((T869*)C))->_local_vars/*48*/))))->_flat_list/*12*/))))->_upper/*12*//*)*/)>(0))) {
  1099. C->_local_vars=r620to_runnable(((T620*)((((T869*)C))->_local_vars/*48*/)),(((T869*)C))->_current_type/*4*/);
  1100. }
  1101. /*FI*/C->_routine_body=(((T134*)((T134*)((((T869*)C))->_base_feature/*44*/))))->_routine_body/*52*/;
  1102. /*IF*/if (((((T869*)C))->_routine_body/*32*/)!=((void*)(NULL))) {
  1103. C->_routine_body=r592to_runnable(((T592*)((((T869*)C))->_routine_body/*32*/)),(((T869*)C))->_current_type/*4*/);
  1104. }
  1105. /*FI*//*IF*/if (r590require_check(((T590*)(oBC364run_control)))) {
  1106. C->_require_assertion=r134run_require((T0*)C);
  1107. }
  1108. /*FI*//*IF*/if (r590ensure_check(((T590*)(oBC364run_control)))) {
  1109. C->_ensure_assertion=r134run_ensure((T0*)C);
  1110. }
  1111. /*FI*/r916add_procedure((T0*)C);
  1112. }
  1113. /*No:RUN_FEATURE_5.afd_check*/
  1114. /*No:RUN_FEATURE_5.update_tmp_jvm_descriptor*/
  1115. /*No:CALL_INFIX_LT.arguments*/
  1116. T0* r112add_comment(T112* C,T0* a1){
  1117. T0* R=NULL;
  1118. /*IF*/if (((a1)==((void*)(NULL)))||((/*(IRF4.6count*/r52count(((T52*)((((T393*)((T393*)a1)))->_list/*4*/)))/*)*/)==(0))) {
  1119. R=(T0*)C;
  1120. }
  1121. else {
  1122. {T529*n=malloc(sizeof(*n));
  1123. *n=M529;
  1124. r529make(n,(T0*)C,a1);
  1125. R=(T0*)n;
  1126. }
  1127. }
  1128. /*FI*/return R;
  1129. }
  1130. int r112to_integer(T112* C){
  1131. int R=0;
  1132. r112error(/*(IRF4.6start_position*/(((T454*)((T454*)((((T112*)C))->_feature_name/*28*/))))->_start_position/*8*//*)*/,((T0*)ms69_470));
  1133. return R;
  1134. }
  1135. int r112is_a(T112* C,T0* a1){
  1136. int R=0;
  1137. R=X291is_a(X291run_type((((T112*)C))->_result_type/*20*/),X291run_type(X662result_type(a1)));
  1138. /*IF*/if (!(R)) {
  1139. r683add_position(/*(IRF4.6start_position*/(((T454*)((T454*)((((T112*)C))->_feature_name/*28*/))))->_start_position/*8*//*)*/);
  1140. r112error(X662start_position(a1),((T0*)ms4_662));
  1141. }
  1142. /*FI*/return R;
  1143. }
  1144. /*No:CALL_INFIX_LT.is_current*/
  1145. int r112jvm_branch_if_false(T112* C){
  1146. int R=0;
  1147. /*IF*/if (X291is_integer((((T112*)C))->_current_type/*8*/)) {
  1148. X662compile_to_jvm((((T112*)C))->_target/*12*/);
  1149. X662compile_to_jvm(/*(IRF4.6arg1*/r431first(((T431*)((((T112*)C))->_arguments/*24*/)))/*)*/);
  1150. R=r256opcode_if_icmpge(((T256*)(oBC364code_attribute)));
  1151. }
  1152. else {
  1153. R=r112jvm_standard_branch_if_false(C);
  1154. }
  1155. /*FI*/return R;
  1156. }
  1157. /*No:CALL_INFIX_LT.static_value*/
  1158. void r112make(T112* C,T0* a1,T0* a2,T0* a3){
  1159. T0* _eal=NULL;
  1160. /*IF*/if (((a1)==((void*)(NULL)))||((a3)==((void*)(NULL)))) {
  1161. r683add_position(a2);
  1162. /*[IRF3.6fatal_error*/{T0* b1=((T0*)ms1_618);
  1163. r683fatal_error(((T683*)(oBC364eh)),b1);
  1164. }/*]*/
  1165. }
  1166. /*FI*/{T454*n=malloc(sizeof(*n));
  1167. *n=M454;
  1168. r454make(n,r112operator(),a2);
  1169. C->_feature_name=(T0*)n;
  1170. }
  1171. {T431*n=malloc(sizeof(*n));
  1172. *n=M431;
  1173. /*[IRF3.3make*/((((T431*)(n)))->_list)=(se_ma96(1,a3));
  1174. /*]*/
  1175. _eal=(T0*)n;
  1176. }
  1177. r112make_call_1(C,a1,(((T112*)C))->_feature_name/*28*/,_eal);
  1178. }
  1179. /*No:CALL_INFIX_LT.nb_errors*/
  1180. /*No:CALL_INFIX_LT.feature_name*/
  1181. /*No:CALL_INFIX_LT.compile_to_jvm_assignment*/
  1182. /*No:CALL_INFIX_LT.fz_iinaiv*/
  1183. /*No:CALL_INFIX_LT.arg_count*/
  1184. int r112jvm_branch_if_true(T112* C){
  1185. int R=0;
  1186. /*IF*/if (X291is_integer((((T112*)C))->_current_type/*8*/)) {
  1187. X662compile_to_jvm((((T112*)C))->_target/*12*/);
  1188. X662compile_to_jvm(/*(IRF4.6arg1*/r431first(((T431*)((((T112*)C))->_arguments/*24*/)))/*)*/);
  1189. R=r256opcode_if_icmplt(((T256*)(oBC364code_attribute)));
  1190. }
  1191. else {
  1192. R=r112jvm_standard_branch_if_true(C);
  1193. }
  1194. /*FI*/return R;
  1195. }
  1196. /*No:CALL_INFIX_LT.run_feature*/
  1197. /*No:CALL_INFIX_LT.start_position*/
  1198. void r112compile_to_jvm_old(T112* C){
  1199. X662compile_to_jvm_old((((T112*)C))->_target/*12*/);
  1200. /*IF*/{/*AT*/r431compile_to_jvm_old(((T431*)((((T112*)C))->_arguments/*24*/)));
  1201. }
  1202. /*FI*/}
  1203. /*No:CALL_INFIX_LT.target*/
  1204. T0* r112to_runnable(T112* C,T0* a1){
  1205. T0* R=NULL;
  1206. T0* _tla=NULL;
  1207. T0* _a=NULL;
  1208. /*IF*/if (((((T112*)C))->_current_type/*8*/)==((void*)(NULL))) {
  1209. r112to_runnable_0(C,a1);
  1210. _a=r431to_runnable(((T431*)((((T112*)C))->_arguments/*24*/)),a1);
  1211. /*IF*/if ((_a)==((void*)(NULL))) {
  1212. r112error(X662start_position(/*(IRF4.6arg1*/r431first(((T431*)((((T112*)C))->_arguments/*24*/)))/*)*/),((T0*)ms55_470));
  1213. }
  1214. else {
  1215. C->_arguments=_a;
  1216. }
  1217. /*FI*//*IF*/if ((/*(IRF4.9nb_errors*/(((T683*)((T683*)(oBC364eh))))->_nb_errors/*0*//*)*/)==(0)) {
  1218. r431match_with(((T431*)((((T112*)C))->_arguments/*24*/)),(((T112*)C))->_run_feature/*16*/);
  1219. }
  1220. /*FI*//*IF*/if ((/*(IRF4.9nb_errors*/(((T683*)((T683*)(oBC364eh))))->_nb_errors/*0*//*)*/)==(0)) {
  1221. _tla=(((T112*)C))->_result_type/*20*/;
  1222. if(NULL!=(_tla))switch(((T0*)_tla)->id) {
  1223. case 239: 
  1224. break;
  1225. default:
  1226. _tla=NULL;
  1227. };/*IF*/if ((_tla)!=((void*)(NULL))) {
  1228. C->_result_type=X291run_type(X662result_type(/*(IRF4.6arg1*/r431first(((T431*)((((T112*)C))->_arguments/*24*/)))/*)*/));
  1229. }
  1230. /*FI*/}
  1231. /*FI*//*IF*/if ((/*(IRF4.9nb_errors*/(((T683*)((T683*)(oBC364eh))))->_nb_errors/*0*//*)*/)==(0)) {
  1232. R=(T0*)C;
  1233. }
  1234. /*FI*/}
  1235. else {
  1236. R=r112twin(C);
  1237. /*[IRF3.3set_current_type*/((((T112*)(((T112*)R))))->_current_type)=(NULL);
  1238. /*]*/
  1239. R=r112to_runnable(((T112*)R),a1);
  1240. }
  1241. /*FI*/return R;
  1242. }
  1243. /*No:CALL_INFIX_LT.result_type*/
  1244. /*No:CALL_INFIX_LT.is_result*/
  1245. T0* r112twin(T112* C){
  1246. T0* R=NULL;
  1247. R=malloc(sizeof(*C));
  1248. *((T112*)R)=*C;
  1249. return R;
  1250. }
  1251. /*No:CALL_INFIX_LT.set_current_type*/
  1252. T0* r112operator(void){
  1253. T0* R=NULL;
  1254. R=((T0*)ms36_473);
  1255. return R;
  1256. }
  1257. int r112is_static(T112* C){
  1258. int R=0;
  1259. /*IF*/if (X291is_integer(X662result_type((((T112*)C))->_target/*12*/))) {
  1260. /*IF*/if ((X662is_static((((T112*)C))->_target/*12*/))&&(X662is_static(/*(IRF4.6arg1*/r431first(((T431*)((((T112*)C))->_arguments/*24*/)))/*)*/))) {
  1261. R=1;
  1262. /*IF*/if ((X662static_value((((T112*)C))->_target/*12*/))<(X662static_value(/*(IRF4.6arg1*/r431first(((T431*)((((T112*)C))->_arguments/*24*/)))/*)*/))) {
  1263. C->_static_value_mem=1;
  1264. }
  1265. else {
  1266. C->_static_value_mem=0;
  1267. }
  1268. /*FI*/}
  1269. /*FI*/}
  1270. /*FI*/return R;
  1271. }
  1272. void r112standard_compile_target_to_jvm(T112* C){
  1273. /*[IRF3.4compile_to_jvm*//*[IRF3.6call_proc_call_c2jvm*/{T112* C1=C;
  1274. r228b_put_cpc(((T228*)(oBC364jvm)),(T0*)C1);
  1275. }/*]*/
  1276. /*]*/
  1277. X291jvm_check_class_invariant((((T112*)C))->_result_type/*20*/);
  1278. }
  1279. int r112compile_to_jvm_into(T112* C,T0* a1){
  1280. int R=0;
  1281. R=r112standard_compile_to_jvm_into(C,a1);
  1282. return R;
  1283. }
  1284. /*No:CALL_INFIX_LT.compile_target_to_jvm*/
  1285. /*No:CALL_INFIX_LT.fz_07*/
  1286. /*No:CALL_INFIX_LT.can_be_dropped*/
  1287. /*No:CALL_INFIX_LT.current_type*/
  1288. /*No:CALL_INFIX_LT.jvm_assign*/
  1289. /*No:CALL_INFIX_LT.static_value_mem*/
  1290. void r112make_call_1(T112* C,T0* a1,T0* a2,T0* a3){
  1291. C->_target=a1;
  1292. C->_feature_name=a2;
  1293. C->_arguments=a3;
  1294. }
  1295. /*No:CALL_INFIX_LT.is_manifest_string*/
  1296. /*No:CALL_INFIX_LT.is_void*/
  1297. int r112jvm_standard_branch_if_false(T112* C){
  1298. int R=0;
  1299. /*[IRF3.4compile_to_jvm*//*[IRF3.6call_proc_call_c2jvm*/{T112* C1=C;
  1300. r228b_put_cpc(((T228*)(oBC364jvm)),(T0*)C1);
  1301. }/*]*/
  1302. /*]*/
  1303. R=r256opcode_ifeq(((T256*)(oBC364code_attribute)));
  1304. return R;
  1305. }
  1306. /*No:CALL_INFIX_LT.compile_to_jvm*/
  1307. void r112to_runnable_0(T112* C,T0* a1){
  1308. C->_current_type=a1;
  1309. r112cpc_to_runnable(C,a1);
  1310. C->_result_type=/*X496*/((T0*)(((T832*)((T832*)((((T112*)C))->_run_feature/*16*/))))->_result_type/*24*/);
  1311. /*IF*/if (((((T112*)C))->_result_type/*20*/)==((void*)(NULL))) {
  1312. r683add_position(X496start_position((((T112*)C))->_run_feature/*16*/));
  1313. r112error((((T454*)((T454*)((((T112*)C))->_feature_name/*28*/))))->_start_position/*8*/,((T0*)ms1_295));
  1314. }
  1315.  else if (X291is_like_current((((T112*)C))->_result_type/*20*/)) {
  1316. C->_result_type=X662result_type((((T112*)C))->_target/*12*/);
  1317. }
  1318. /*FI*/}
  1319. /*No:CALL_INFIX_LT.is_pre_computable*/
  1320. int r112jvm_standard_branch_if_true(T112* C){
  1321. int R=0;
  1322. /*[IRF3.4compile_to_jvm*//*[IRF3.6call_proc_call_c2jvm*/{T112* C1=C;
  1323. r228b_put_cpc(((T228*)(oBC364jvm)),(T0*)C1);
  1324. }/*]*/
  1325. /*]*/
  1326. R=r256opcode_ifne(((T256*)(oBC364code_attribute)));
  1327. return R;
  1328. }
  1329. int r112use_current(T112* C){
  1330. int R=0;
  1331. /*IF*/{/*AT*/R=r431use_current(((T431*)((((T112*)C))->_arguments/*24*/)));
  1332. }
  1333. /*FI*//*IF*/if (R) {
  1334. }
  1335.  else if (X662is_current((((T112*)C))->_target/*12*/)) {
  1336. R=X496use_current((((T112*)C))->_run_feature/*16*/);
  1337. }
  1338. else {
  1339. R=X662use_current((((T112*)C))->_target/*12*/);
  1340. }
  1341. /*FI*/return R;
  1342. }
  1343. void r112cpc_to_runnable(T112* C,T0* a1){
  1344. T0* _rc=NULL;
  1345. T0* _t=NULL;
  1346. _t=X662to_runnable((((T112*)C))->_target/*12*/,a1);
  1347. /*IF*/if ((_t)==((void*)(NULL))) {
  1348. r683add_position(X662start_position((((T112*)C))->_target/*12*/));
  1349. /*[IRF3.6fatal_error*/{T0* b1=((T0*)ms2_135);
  1350. r683fatal_error(((T683*)(oBC364eh)),b1);
  1351. }/*]*/
  1352. }
  1353. /*FI*/C->_target=_t;
  1354. _rc=X291run_class(X662result_type((((T112*)C))->_target/*12*/));
  1355. C->_run_feature=r355get_rf(((T355*)_rc),(T0*)C);
  1356. r576update((((T112*)C))->_target/*12*/,(((T112*)C))->_run_feature/*16*/);
  1357. }
  1358. void r112error(T0* a1,T0* a2){
  1359. r683add_position(a1);
  1360. r683error(((T683*)(oBC364eh)),a2);
  1361. }
  1362. /*No:CALL_INFIX_LT.isa_dca_inline_argument*/
  1363. /*No:CALL_INFIX_LT.fatal_error*/
  1364. /*No:CALL_INFIX_LT.fz_bad_argument*/
  1365. /*No:CALL_INFIX_LT.arg1*/
  1366. int r112standard_compile_to_jvm_into(T112* C,T0* a1){
  1367. int R=0;
  1368. /*[IRF3.4compile_to_jvm*//*[IRF3.6call_proc_call_c2jvm*/{T112* C1=C;
  1369. r228b_put_cpc(((T228*)(oBC364jvm)),(T0*)C1);
  1370. }/*]*/
  1371. /*]*/
  1372. R=X291jvm_convert_to(X291run_type((((T112*)C))->_result_type/*20*/),a1);
  1373. return R;
  1374. }
  1375. /*No:CALL_INFIX_LT.call_proc_call_c2jvm*/
  1376. /*No:CALL_INFIX_LT.us_lt*/
  1377. void r112afd_check(T112* C){
  1378. T0* _running=NULL;
  1379. T0* _rc=NULL;
  1380. _rc=X291run_class(X662result_type((((T112*)C))->_target/*12*/));
  1381. _running=(((T355*)((T355*)_rc)))->_running/*12*/;
  1382. /*IF*/if ((_running)==((void*)(NULL))) {
  1383. r683add_position(X662start_position((((T112*)C))->_target/*12*/));
  1384. /*[IRF3.6append*/{T0* b1=((T0*)ms1_135);
  1385. r7append(((T7*)(oBC683explanation)),b1);
  1386. }/*]*/
  1387. /*[IRF3.6append*/{T0* b1=X291run_time_mark((((T355*)((T355*)_rc)))->_current_type/*0*/);
  1388. r7append(((T7*)(oBC683explanation)),b1);
  1389. }/*]*/
  1390. /*[IRF3.6append*/{T0* b1=((T0*)ms141_470);
  1391. r7append(((T7*)(oBC683explanation)),b1);
  1392. }/*]*/
  1393. r683print_as_warning(((T683*)(oBC364eh)));
  1394. r355set_at_run_time(((T355*)_rc));
  1395. }
  1396.  else if ((r396count(((T396*)_running)))>(0)) {
  1397. r576update((((T112*)C))->_target/*12*/,(((T112*)C))->_run_feature/*16*/);
  1398. }
  1399. /*FI*/X662afd_check((((T112*)C))->_target/*12*/);
  1400. /*IF*/{/*AT*/r431afd_check(((T431*)((((T112*)C))->_arguments/*24*/)));
  1401. }
  1402. /*FI*/}
  1403. int r648id(T648* C){
  1404. int R=0;
  1405. R=(((T355*)((T355*)(r648run_class(C)))))->_id/*4*/;
  1406. return R;
  1407. }
  1408. void r648jvm_target_descriptor_in(T648* C,T0* a1){
  1409. X291jvm_target_descriptor_in((((T648*)C))->_run_type/*8*/,a1);
  1410. }
  1411. int r648jvm_if_x_eq(T648* C){
  1412. int R=0;
  1413. R=X291jvm_if_x_eq((((T648*)C))->_run_type/*8*/);
  1414. return R;
  1415. }
  1416. int r648has_creation(T648* C,T0* a1){
  1417. int R=0;
  1418. R=X291has_creation((((T648*)C))->_run_type/*8*/,a1);
  1419. return R;
  1420. }
  1421. /*No:TYPE_LIKE_FEATURE.is_anchored*/
  1422. int r648is_array(T648* C){
  1423. int R=0;
  1424. R=X291is_array((((T648*)C))->_run_type/*8*/);
  1425. return R;
  1426. }
  1427. int r648is_a(T648* C,T0* a1){
  1428. int R=0;
  1429. R=X291is_a((((T648*)C))->_run_type/*8*/,a1);
  1430. return R;
  1431. }
  1432. void r648jvm_to_reference(T648* C){
  1433. X291jvm_to_reference((((T648*)C))->_run_type/*8*/);
  1434. }
  1435. int r648is_pointer(T648* C){
  1436. int R=0;
  1437. R=X291is_pointer((((T648*)C))->_run_type/*8*/);
  1438. return R;
  1439. }
  1440. /*No:TYPE_LIKE_FEATURE.run_type*/
  1441. int r648is_dummy_expanded(T648* C){
  1442. int R=0;
  1443. R=X291is_dummy_expanded((((T648*)C))->_run_type/*8*/);
  1444. return R;
  1445. }
  1446. int r648jvm_push_default(T648* C){
  1447. int R=0;
  1448. R=X291jvm_push_default((((T648*)C))->_run_type/*8*/);
  1449. return R;
  1450. }
  1451. int r648is_string(T648* C){
  1452. int R=0;
  1453. R=X291is_string((((T648*)C))->_run_type/*8*/);
  1454. return R;
  1455. }
  1456. /*No:TYPE_LIKE_FEATURE.is_like_feature*/
  1457. /*No:TYPE_LIKE_FEATURE.is_like_current*/
  1458. T0* r648ultimate_run_type(T648* C,T0* a1){
  1459. T0* R=NULL;
  1460. T0* _t=NULL;
  1461. _t=a1;
  1462. while (!((_t)==((void*)(X291run_type(_t))))) {
  1463. _t=X291run_type(_t);
  1464. }
  1465. /*IF*/if (((((T648*)C))->_run_type/*8*/)==((void*)(NULL))) {
  1466. C->_run_type=_t;
  1467. R=(T0*)C;
  1468. }
  1469. else {
  1470. R=r648twin(C);
  1471. /*[IRF3.3set_run_type*/((((T648*)(((T648*)R))))->_run_type)=(_t);
  1472. /*]*/
  1473. }
  1474. /*FI*/return R;
  1475. }
  1476. void r648make(T648* C,T0* a1,T0* a2){
  1477. C->_start_position=a1;
  1478. C->_like_what=a2;
  1479. r7copy(((T7*)(oBC646tmp_written_mark)),((T0*)ms113_470));
  1480. r7append(((T7*)(oBC646tmp_written_mark)),X776to_string((((T648*)C))->_like_what/*12*/));
  1481. C->_written_mark=r902item(oBC646tmp_written_mark);
  1482. }
  1483. void r648anchor_cycle_start(T648* C){
  1484. int _i=0;
  1485. /*IF*/if (((((T907*)((T907*)(oBC646visited))))->_upper/*8*/)<(0)) {
  1486. r907add_last(((T907*)(oBC646visited)),(((T648*)C))->_start_position/*4*/);
  1487. }
  1488.  else if (r907fast_has(((T907*)(oBC646visited)),(((T648*)C))->_start_position/*4*/)) {
  1489. _i=0;
  1490. while (!((_i)>((((T907*)((T907*)(oBC646visited))))->_upper/*8*/))) {
  1491. r683add_position(/*(IRF4.6item*/((((T907*)((T907*)(oBC646visited))))->_storage/*0*/)[_i]/*)*/);
  1492. _i=(_i)+(1);
  1493. }
  1494. /*[IRF3.6fatal_error*/{T0* b1=((T0*)ms64_470);
  1495. r683fatal_error(((T683*)(oBC364eh)),b1);
  1496. }/*]*/
  1497. }
  1498. else {
  1499. r907add_last(((T907*)(oBC646visited)),(((T648*)C))->_start_position/*4*/);
  1500. }
  1501. /*FI*/}
  1502. /*No:TYPE_LIKE_FEATURE.fz_bad_anchor*/
  1503. void r648jvm_return_code(T648* C){
  1504. X291jvm_return_code((((T648*)C))->_run_type/*8*/);
  1505. }
  1506. void r648jvm_xnewarray(T648* C){
  1507. X291jvm_xnewarray((((T648*)C))->_run_type/*8*/);
  1508. }
  1509. void r648jvm_descriptor_in(T648* C,T0* a1){
  1510. X291jvm_descriptor_in((((T648*)C))->_run_type/*8*/,a1);
  1511. }
  1512. /*No:TYPE_LIKE_FEATURE.start_position*/
  1513. /*No:TYPE_LIKE_FEATURE.like_what*/
  1514. int r648is_user_expanded(T648* C){
  1515. int R=0;
  1516. R=X291is_user_expanded((((T648*)C))->_run_type/*8*/);
  1517. return R;
  1518. }
  1519. int r648is_character(T648* C){
  1520. int R=0;
  1521. R=X291is_character((((T648*)C))->_run_type/*8*/);
  1522. return R;
  1523. }
  1524. /*No:TYPE_LIKE_FEATURE.written_mark*/
  1525. /*No:TYPE_LIKE_FEATURE.is_run_type*/
  1526. T0* r648to_runnable(T648* C,T0* a1){
  1527. T0* R=NULL;
  1528. T0* _rc=NULL;
  1529. T0* _f=NULL;
  1530. T0* _t=NULL;
  1531. r648anchor_cycle_start(C);
  1532. _rc=X291run_class(a1);
  1533. _f=X291look_up_for(a1,_rc,(((T648*)C))->_like_what/*12*/);
  1534. /*IF*/if ((_f)==((void*)(NULL))) {
  1535. r648error((((T648*)C))->_start_position/*4*/,((T0*)ms1_648));
  1536. }
  1537. else {
  1538. _t=/*X359*/((T0*)(((T398*)((T398*)_f)))->_result_type/*12*/);
  1539. /*IF*/if ((_t)==((void*)(NULL))) {
  1540. r683add_position(X359start_position(_f));
  1541. r648error((((T648*)C))->_start_position/*4*/,((T0*)ms2_648));
  1542. }
  1543. else {
  1544. _t=X291to_runnable(_t,a1);
  1545. /*IF*/if ((_t)==((void*)(NULL))) {
  1546. r648error((((T648*)C))->_start_position/*4*/,((T0*)ms54_470));
  1547. }
  1548. else {
  1549. R=r648ultimate_run_type(C,X291run_type(_t));
  1550. }
  1551. /*FI*/}
  1552. /*FI*/}
  1553. /*FI*/r648anchor_cycle_end(C);
  1554. return R;
  1555. }
  1556. /*No:TYPE_LIKE_FEATURE.is_formal_generic*/
  1557. T0* r648generic_list(T648* C){
  1558. T0* R=NULL;
  1559. /*IF*/if (r648is_generic(C)) {
  1560. R=X291generic_list((((T648*)C))->_run_type/*8*/);
  1561. }
  1562. else {
  1563. r648fatal_error_generic_list(C);
  1564. }
  1565. /*FI*/return R;
  1566. }
  1567. int r648is_real(T648* C){
  1568. int R=0;
  1569. R=X291is_real((((T648*)C))->_run_type/*8*/);
  1570. return R;
  1571. }
  1572. T0* r648twin(T648* C){
  1573. T0* R=NULL;
  1574. R=malloc(sizeof(*C));
  1575. *((T648*)R)=*C;
  1576. return R;
  1577. }
  1578. int r648is_bit(T648* C){
  1579. int R=0;
  1580. R=X291is_bit((((T648*)C))->_run_type/*8*/);
  1581. return R;
  1582. }
  1583. void r648fatal_error_generic_list(T648* C){
  1584. r683add_type((T0*)C,((T0*)ms12_291));
  1585. r683print_as_fatal_error(((T683*)(oBC364eh)));
  1586. }
  1587. void r648jvm_check_class_invariant(T648* C){
  1588. X291jvm_check_class_invariant((((T648*)C))->_run_type/*8*/);
  1589. }
  1590. void r648jvm_xaload(T648* C){
  1591. X291jvm_xaload((((T648*)C))->_run_type/*8*/);
  1592. }
  1593. T0* r648smallest_ancestor(T648* C,T0* a1){
  1594. T0* R=NULL;
  1595. R=X291smallest_ancestor((((T648*)C))->_run_type/*8*/,a1);
  1596. return R;
  1597. }
  1598. /*No:TYPE_LIKE_FEATURE.set_run_type*/
  1599. int r648is_boolean(T648* C){
  1600. int R=0;
  1601. R=X291is_boolean((((T648*)C))->_run_type/*8*/);
  1602. return R;
  1603. }
  1604. int r648is_double(T648* C){
  1605. int R=0;
  1606. R=X291is_double((((T648*)C))->_run_type/*8*/);
  1607. return R;
  1608. }
  1609. int r648jvm_stack_space(T648* C){
  1610. int R=0;
  1611. /*IF*/if (r648is_double(C)) {
  1612. R=2;
  1613. }
  1614. else {
  1615. R=1;
  1616. }
  1617. /*FI*/return R;
  1618. }
  1619. T0* r648run_class(T648* C){
  1620. T0* R=NULL;
  1621. R=r604run_class((((T648*)C))->_run_type/*8*/);
  1622. return R;
  1623. }
  1624. T0* r648run_time_mark(T648* C){
  1625. T0* R=NULL;
  1626. /*IF*/if (((((T648*)C))->_run_type/*8*/)!=((void*)(NULL))) {
  1627. R=X291run_time_mark((((T648*)C))->_run_type/*8*/);
  1628. }
  1629. /*FI*/return R;
  1630. }
  1631. /*No:TYPE_LIKE_FEATURE.fz_cad*/
  1632. int r648is_a_in(T648* C,T0* a1,T0* a2){
  1633. int R=0;
  1634. T0* _ct=NULL;
  1635. T0* _t2=NULL;
  1636. T0* _t1=NULL;
  1637. /*IF*/if (((((T648*)C))->_written_mark/*16*/)==((void*)(X291written_mark(a1)))) {
  1638. R=1;
  1639. }
  1640. else {
  1641. _ct=(((T355*)((T355*)a2)))->_current_type/*0*/;
  1642. _t1=r648to_runnable(C,_ct);
  1643. _t2=X291to_runnable(a1,_ct);
  1644. /*IF*/if ((X291run_time_mark(_t1))==((void*)(X291run_time_mark(_t2)))) {
  1645. R=1;
  1646. }
  1647. else {
  1648. R=X291is_a(_t1,_t2);
  1649. }
  1650. /*FI*/}
  1651. /*FI*/return R;
  1652. }
  1653. T0* r648look_up_for(T648* C,T0* a1,T0* a2){
  1654. T0* R=NULL;
  1655. R=r605look_up_for(((T605*)(r648base_class(C))),a1,a2);
  1656. return R;
  1657. }
  1658. int r648jvm_convert_to(T648* C,T0* a1){
  1659. int R=0;
  1660. R=X291jvm_convert_to((((T648*)C))->_run_type/*8*/,a1);
  1661. return R;
  1662. }
  1663. T0* r648expanded_initializer(T648* C){
  1664. T0* R=NULL;
  1665. R=X291expanded_initializer((((T648*)C))->_run_type/*8*/);
  1666. return R;
  1667. }
  1668. int r648jvm_if_x_ne(T648* C){
  1669. int R=0;
  1670. R=X291jvm_if_x_ne((((T648*)C))->_run_type/*8*/);
  1671. return R;
  1672. }
  1673. /*No:TYPE_LIKE_FEATURE.fz_dot*/
  1674.  
  1675.